$(function() {
		//回车键登录事件
		EnterKey('._verifyCode', '._ptuser_login');
		//回车注册事件
		EnterKey('._passwd', '._register');
		//回车发送邮箱，密码找回
		EnterKey('._email_resetEmail', '._emailEnter');
		//重置密码按钮
		EnterKey('._secPasswd', '._resetPasswdBtn');

		$(document)
			.on('click', '._register', function() { //注册事件
				var cur = $(this);
				var data = {
					'email': $('._user_email').val(),
					'passwd': $('._passwd').val(),
					'pt': 'us'
				};
				cur.attr({
					'disabled': 'disabled'
				});
				if(emailVerify($('._user_email'))) {
					formVerifyTip(emailVerify($('._user_email')));
					$('._register').attr({
						'disabled': 'disabled'
					});
				}
				if(passwdVerify($('._passwd'))) {
					formVerifyTip(passwdVerify($('._passwd')));
					$('._register').attr({
						'disabled': 'disabled'
					});
				}
				if(!$('._checkBox').attr('checked')) {
					$('._register').attr({
						'disabled': 'disabled'
					});
					return;
				}
				if(!$('.error')[0]) {
					//设置按钮'注册中...'
					buttonIng(cur, '注册中...');
					//ajax
					$.ajax({
						url: '/member/register',
						type: 'post',
						dataType: 'json',
						async: true,
						data: data,
						success: function(req) {
							if(req.status == 200) {
								// 提交注册成功
								// TODO 埋点1.3
								myCookie.addCookie('registerEmail', data.email);								
								zhuge.track('注册_提交', {}, function() {
									register_success_direct(req.data);
								});							
								$('._register').removeAttr('disabled').html('注&nbsp;&nbsp;册');
							} else {
								if(req.status == 1) {
									$('._user_email').parent().addClass('validate-has-error').append('<label class="error">' + req.msg + '</label>');
									$('._register').removeAttr('disabled').html('注&nbsp;&nbsp;册');
								} else if(req.status == 2) {
									$('._passwd').parent().addClass('validate-has-error').append('<label class="error">' + req.msg + '</label>');
									$('._register').removeAttr('disabled').html('注&nbsp;&nbsp;册');
								} else {
									location.reload();
								}
							}
							return;
						},
						error: function() {
							$('._register').removeAttr('disabled').html('注&nbsp;&nbsp;册');
							toastr.error('系统异常', null, opts)
						}
					});
				}
			})
			.on('focus', '.form-group input', function() { //鼠标移入事件			
				$(this).parent().removeClass('validate-has-error').find('.error').remove();
				if($('._checkBox') && $('._checkBox').attr('checked')) {
					$('._btn').removeAttr('disabled');
				} else if(!$('._checkBox')[0]) {
					$('._btn').removeAttr('disabled');
				}
			})
			.on('keyup', '._passwd', function(e) { //解决回车问题
				($(this).val() && $(this).nextAll('.error')) && e.keyCode != 13 ? $(this).parent().removeClass('validate-has-error').find('.error').remove() : '';
				e.keyCode != 13 && $('._register').removeAttr('disabled');
			})
			.on('blur', '._user_email', function() {
				var returnObj = emailVerify($(this));
				var error = $(this).next('.error')[0]
				if(error) {
					$(error).remove();
				}
				if(returnObj) {
					formVerifyTip(returnObj);
					$('._btn').attr({
						'disabled': 'disabled'
					});
				}
			})
			.on('blur', '._passwd', function() {
				var returnObj = passwdVerify($(this));
				if(returnObj) {
					formVerifyTip(returnObj);
					$('._btn').attr({
						'disabled': 'disabled'
					});
				}
			})
			.on('click', '._checkBox', function() {
				var $this = $(this);
				if($this.attr('checked')) {
					$this.removeAttr('checked');
					$('._register').attr({
						'disabled': 'disabled'
					});
				} else {
					$(this).attr({
						'checked': 'checked'
					});
					$('._register').removeAttr('disabled');
				}
			})
			.on('click', '._ptuser_login', function() { //登录事件
				var cur = $(this);
				var data = {
					'user_email': $('._user_email').val(),
					'passwd': $('._passwd').val(),
					'verifyCode': $('._verifyCode').val()
				};
				cur.attr({
					'disabled': 'disabled'
				});
				if(emailVerify($('._user_email'))) {
					formVerifyTip(emailVerify($('._user_email')));
					cur.attr({
						'disabled': 'disabled'
					});
				}
				if(passwdVerify($('._passwd'))) {
					formVerifyTip(passwdVerify($('._passwd')));
					cur.attr({
						'disabled': 'disabled'
					});
				}
				if(nullVerify($('._verifyCode'))) {
					formVerifyTip(nullVerify($('._verifyCode')));
					cur.attr({
						'disabled': 'disabled'
					});
				}
				if(!$('.error')[0]) {
					//组装发送数据
					data.login_type = $("._user_login_type").val();
					data['37degree_role'] = $("._37degree_role").val();
					data.verify = $('._verifyCode').val();
					//设置按钮'登录中...'
					buttonIng(cur, '登录中...');
					$.ajax({ //请求
						url: '/member/login.html',
						type: 'post',
						dataType: 'json',
						async: true,
						data: data,
						success: function(req) {
							if(req.status == 200) {
								// 登录成功
								// TODO 埋点--记录登录用户的账号	1.3	
								zhuge.identify(data.user_email, {}, function() {
									login_success_direct(req.data);
								})
							} else {
								if(req.status == 1) { //邮箱错误
									$('._user_email').parent().addClass('validate-has-error').append('<label class="error">' + req.msg + '</label>');
								} else if(req.status == 2) { //密码错误
									$('._passwd').parent().addClass('validate-has-error').append('<label class="error">' + req.msg + '</label>');
								} else { //验证码错误	
									$('._verifyCode').parent().addClass('validate-has-error').append('<label class="error">' + req.msg + '</label>');
								}
								updateVerityCode();
								cur.html('登&nbsp;&nbsp;录').removeAttr('disabled');
							}
							return;
						},
						error: function() {
							cur.removeAttr('disabled').html('登&nbsp;&nbsp;录');
							toastr.error('系统异常', null, opts);
						}
					});
				}
			})
			.on('blur', '._verifyCode', function() { //验证码是否为空
				nullVerify($(this)) ? formVerifyTip(nullVerify($(this))) : '';
			})
			.on('click', '._img_update', function() { //点击更换验证码
				updateVerityCode();
			})
			.on('keyup', '._verifyCode', function(e) { //验证码输入去掉错误样式，用于解决回车事件
				($(this).val() && $(this).nextAll('.error')) && e.keyCode != 13 ? $(this).parent().removeClass('validate-has-error').find('.error').remove() : '';
				e.keyCode != 13 && $('._ptuser_login').removeAttr('disabled');
			})
			.on('click', '._emailEnter', function() {
				var btn = $(this);				
				var emailEle = $('._user_email');
				var data = {
					'email': emailEle.val()
				}
				var ifNull = nullVerify($('._user_email'));
				if(ifNull){
					emailEle.parent().addClass('validate-has-error').append('<label class="error">邮箱不能为空</label>');
					btn.attr({'disabled':'disabled'});
					return;
				}
				var ifEmail = emailVerify(emailEle);
				if(ifEmail){
					emailEle.parent().addClass('validate-has-error').append('<label class="error">请输入正确的邮箱</label>');
					btn.attr({'disabled':'disabled'});
					return;
				}
				buttonIng(btn, '提交中...');
				$.ajax({
					url: '/member/getpassword.html',
					type: 'post',
					dataType: 'json',
					async: true,
					data: data,
					success: function(req) {
						if(req.status == 200) {
							// 重置密码邮件发送成功
							var email = req.data;
							location.href = "/member/resetmailsuccess.html?email=" + email;
						} else {							
							if(req.status == 1) { //邮箱不存在
								$('._user_email').parent().addClass('validate-has-error').append('<label class="error">邮箱不存在</label>');
							} else {
								toastr.error(req.msg, null, opts);
							}
						}
						btn.html('提&nbsp;&nbsp;交').removeAttr('disabled');						
						return;
					},
					error: function() {
						toastr.error('系统异常', null, opts);
						btn.html('提&nbsp;&nbsp;交').removeAttr('disabled');						
					}
				});
			})
			.on('keyup', '._email_resetEmail', function(e) { //重置密码事件
				($(this).val() && $(this).nextAll('.error')) && e.keyCode != 13 ? $(this).parent().removeClass('validate-has-error').find('.error').remove() : '';
				e.keyCode != 13 && $('._emailEnter').removeAttr('disabled');
			})
			.on('blur', '._secPasswd', function() {
				var secPasswd = $(this).val();
				var passwd = $('._passwd').val();
				if(passwdVerify($(this)))
					return;
				if(!$(this).next('.error')[0] && secPasswd != passwd) {
					$(this).parent().addClass('validate-has-error').append('<label class="error">请输入相同密码</label>');
				} else {
					$(this).next('.error').html('请输入相同密码')
				}
			})
			.on('keyup', '._secPasswd', function(e) {
				($(this).val() && $(this).nextAll('.error')) && e.keyCode != 13 ? $(this).parent().removeClass('validate-has-error').find('.error').remove() : '';
				e.keyCode != 13 && $('._resetPasswdBtn').removeAttr('disabled');
			})
			.on('click', '._resetPasswdBtn', function() {
				var curBtn = $(this);
				var user_email = $("#user_email").text();
				if(user_email == '') {
					toastr('无法获取邮箱', null, opts);
					return;
				}
				buttonIng(curBtn, '重置中...');
				var data = {
					'user_email': user_email,
					'first_pwd': $('._newPasswd').val(),
					'second_pwd': $('._secPasswd').val()
				};
				$.ajax({
					url: '/member/resetpwd.html',
					type: 'post',
					dataType: 'json',
					async: true,
					data: data,
					success: function(req) {					
						if(req.status == 200) {
							// 重置密码邮件发送成功
							var email = req.data;
							location.href = "/member/resetsuccess.html";
						} else {
							/*if(req.status == 1) {
								add_login_error("resetmail", req.msg);
							} */
							toastr.error(req.msg,null,opts);							
						}
						return;
					},
					error: function() {
						toastr.error('系统异常',null,opts);
					}
				});
			});

})
	//----函数------------------------------------------------------------------------------------------
	/**
	 *判断元素val是否为空 
	 * @param {Object} $element jq对象
	 */
function nullVerify($element) {
	if(!$element.val() && !$element.val().trim()) {
		return {
			'$element': $element,
			'code': 0,
			'msg': '不能为空'
		};
	} else {
		return;
	}
}
/**
 *判断邮箱是否合法 
 * @param {Object} $element 邮箱元素
 */
function emailVerify($element) {
	if(nullVerify($element)) {
		return nullVerify($element);
	} else {
		var pattern = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if(!pattern.test($element.val())) {
			return {
				'$element': $element,
				'code': -1,
				'msg': '请输入正确的邮箱'
			};
		} else {
			return;
		}
	}
}
/**
 *密码长度是6-16位的任意字符 
 * @param {Object} $element 密码元素
 */
function passwdVerify($element) {
	if(nullVerify($element)) {
		return nullVerify($element)
	} else {
		var pattern = /^[\w~!@#$%^&*]{6,16}$/;
		if(!pattern.test($element.val())) {
			return {
				'$element': $element,
				'code': -1,
				'msg': '请输入6-16位字符的密码'
			};
		} else {
			return;
		}
	}
}
/**
 *根据表单错误码，添加不同的错误信息 
 * @param {Object} returnObj 表单内容不合法返回值
 */
function formVerifyTip(returnObj) {
	switch(returnObj.code) {
		case 0:
			returnObj.$element.parent().addClass('validate-has-error').append('<label class="error">' + returnObj.$element.attr('tip') + '</label>');
			break;
		case -1:
			returnObj.$element.parent().addClass('validate-has-error').append('<label class="error">' + returnObj.msg + '</label>');
			break;
	}
}
/**
 * 回车点击事件
 * @param {Object} elementKey 绑定给谁（选择器）
 * @param {Object} elementKey 触发谁的事件（选择器）
 */
function EnterKey(elementKey, elementTrigger) {
	$(elementKey).keydown(function(event) {
		if(event.keyCode == 13) {
			$(elementTrigger).trigger('click');
		}
	});
}
/**
 *设置按钮正在进行中 
 * @param {Object} btn 按钮
 * @param {Object} msg 提示信息
 */
function buttonIng(btn, msg) {
	msg ? msg : '提交中...';
	btn.html('<i class="fa fa-spin fa-spinner body-fa-spinner"></i>' + msg).attr({
		'disabled': 'disabled'
	});
}
// 用户注册成功以后 跳转
function register_success_direct(email) {
	location.href = "/member/mailsuccess.html?email=" + email;
}
//更新验证码
function updateVerityCode() {
	$('._verifyCode')[0].value = ''
	$('._img_update')[0].src = '/member/imgverify.html?d=' + Math.random()
}
// 用户登录成功以后调整页面
function login_success_direct(ut) {
	if(ut == 2) {
		location.href = "/apiworks/index";
	} else if(ut == 1) {
		preRefer = document.referrer;
		preRefer&&(!/\/member\//.test(preRefer)) ? location.href = preRefer : location.href = "/Index/index";
	}
}
